TA DIrextXの魔導書
もしかしてテクニカルアーティスト?ヲ.icon
TAはtouaK_aOiの略
結局 : WINDOWSAPIの支配下 :touka_kanasi
WINDOWS API の話じゃないか!!!!!
冬夏葵 WindowsAPI
メモ書き程度に
グラフィックパイプライン
https://scrapbox.io/files/6134b23932f664002330eb34.png
IA Input-Assembler
バイト列を解釈するステージ->頂点レイアウトという
VS Vertex Shader
頂点を変換するステージ
平行移動、回転
ローカル->ワールド->カメラ->SS(スクリーンスペース)
https://scrapbox.io/files/6134b4100ed411001d7ab23d.png
HS Hull Shader
テッセレーションのために
パッチ定数はストライド的なものかな(4とか、3とか)
出力パッチデータは分割された後のデータでHoudiniでいうプリミティブ?
これがコントロールポイントともいう
実際使ってみないとわからん
TS tesselator
Hull Shaderの情報をもとに分割するためのプロパティをつくる
ドメインロケーションという
ノンプログラマブル
アルゴリズムは不明
DS Domain Shader
HSとTSで作られたドメインロケーション、コントロールポイント、パッチ定数からポリゴンを分割する
GS geometory Shader
プリミティブ単位での加工を行う
シャドウボリューム
3Dグラフィックス・マニアックス(22) 影の生成(3)~ステンシルシャドウボリューム技法(1) | マイナビニュース
フィン法ファー表現
Unity で URP 向けのファーシェーダを書いてみた(フィン法) - 凹みTips
RS Rasterizer
ラスタライズするステージ
スキャンライン法
頂点補間もここで行う
【画像処理】バイリニア補間法の原理・計算式 | 西住工房
ノンプログラマブル
PS Pixel Shader
色をつけるステージ
OM Output-Merger
深度テスト(Z値テスト)
ブレンドをするかどうか
HLSL
matrix (4*4) のインデックス指定
mをつけることで0始まりだが、基本は1始まり
code:HLSL
matrix world = mat;
world._12 // 1行2列
wordl._m01 //1行2列
掛け算
*ではなくmulを使う
code:HLSL
mul(mat1, mat2)
セマンティクス
パイプラインを下っていくときには意味づけをしてあげる必要がある
code:HLSL
matrix pos :POSITION;
このセマンティクスはIAにて記述する。
ref
グラフィックス パイプライン - UWP applications | Microsoft Docs
EnumAdapters
EnumAdapters(i, &tmpAdapter)
アダプターにアクセスする
code:diretx12.cpp
EnumAdapters(i, &tmpAdapter)
//インデックス, アダプタのポインタ
https://docs.microsoft.com/ja-jp/windows/win32/api/dxgi/nf-dxgi-idxgifactory-enumadapters
DirectX12初期化
IID_PPV_ARGS macro (combaseapi.h) - Win32 apps | Microsoft Docs
CreateDXGIFactory1
DXGIオブジェクトを生成する